package com.ovidiojf.fieldplan.esporte;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

public class EsporteDAOHibernate implements EsporteDAO {

	private Session session;
	
	public Session getSession() {
		return session;
	}

	public void setSession(Session session) {
		this.session = session;
	}

	@Override
	public void salvar(Esporte esporte) {
		this.session.save(esporte);
		
	}

	@Override
	public void alterar(Esporte esporte) {
		this.session.update(esporte);		
	}

	@Override
	public void excluir(Esporte esporte) {
		this.session.delete(esporte);		
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Esporte> listar() {
		return this.session.createCriteria(Esporte.class).list();
	}

	@Override
	public Esporte pesquisarPorNome(String nome) {
		Query query = this.session.createQuery("from Esporte e where e.nome like :nome");
		query.setString("nome", "%"+nome+"%");
		return (Esporte) query.uniqueResult();
	}

	@Override
	public Esporte pesquisarPorId(String id) {
//		Query query = this.session.createQuery("from Esporte e where e.id = :id");
//		query.setString("id", id);
//		return (Esporte) query.uniqueResult();	

		Criteria criteria = this.session.createCriteria(Esporte.class);
		criteria.add(Restrictions.idEq(new Integer(id)));
		
		return (Esporte) criteria.uniqueResult();
		
	}

//	@Override
//	public Esporte pesquisarPorId(Integer id) {
//		Query query = this.session.createQuery("from Esporte e where e.id = :id");
//		query.setInteger("id", id);
//		return (Esporte) query.uniqueResult();
//	}

}
